importPackage(Packages.de.elo.ix.client);
//@include lib_Class.js
//@include lib_sol.common.ix.FunctionBase.js
//@include lib_sol.common.ix.SubscriptionUtils.js
var logger = sol.create("sol.Logger", { scope: "sol.common.ix.functions.Subscription" });
/**
* Provides functions for subscriptions.
*
* # As workflow node
*
* ObjId is set based on the element that the workflow is attached to.
* Following configuration should be applied to the comments field.
*
* # As IX function call
*
* sol.common.IxUtils.execute("RF_sol_function_Subscribe", {
* objId: "4711"
* });
*
* @author PZ, ELO Digital Office GmbH
* @version 1.03.000
*
* @eloix
* @requires sol.common.WfUtils
* @requires sol.common.ix.RfUtils
* @requires sol.common.ix.FunctionBase
* @requires sol.common.ix.SubscriptionUtils
*/
sol.define("sol.common.ix.functions.Subscription", {
extend: "sol.common.ix.FunctionBase",
/**
* @cfg {String} objId Either `objId` or `feedGuid` has to be defined.
*/
/**
* @cfg {String} feedGuid Either `objId` or `feedGuid` has to be defined.
*/
/**
* @cfg {Boolean} [subscribe=false] If `true` the user will subscribe to the element, if `false` the user will unsubscribe.
*/
initialize: function (config) {
var me = this;
me.$super("sol.common.ix.FunctionBase", "initialize", [config]);
},
/**
* Manages the subscription.
*/
process: function () {
var me = this;
if (!me.objId && !me.feedGuid) {
throw "IllegalStataException: either 'objId' or 'feedGuid' has to be defined";
}
if (me.subscribe === true) {
me.feedGuid ? sol.common.ix.SubscriptionUtils.subscribe(me.feedGuid) : sol.common.ix.SubscriptionUtils.subscribeToElement(me.objId);
} else {
me.feedGuid ? sol.common.ix.SubscriptionUtils.unsubscribe(me.feedGuid) : sol.common.ix.SubscriptionUtils.unsubscribeFromElement(me.objId);
}
}
});
/**
* @member sol.common.ix.functions.Subscription
* @static
* @inheritdoc sol.common.ix.FunctionBase#onEnterNode
*/
function onEnterNode(clInfo, userId, wFDiagram, nodeId) {
var params, module;
logger.enter("onEnterNode_Subscription", { flowId: wFDiagram.id, nodeId: nodeId });
params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId);
params.objId = wFDiagram.objId;
module = sol.create("sol.common.ix.functions.Subscription", params);
module.process();
logger.exit("onEnterNode_Subscription");
}
/**
* @member sol.common.ix.functions.Subscription
* @static
* @inheritdoc sol.common.ix.FunctionBase#onExitNode
*/
function onExitNode(clInfo, userId, wFDiagram, nodeId) {
var params, module;
logger.enter("onExitNode_Subscription", { flowId: wFDiagram.id, nodeId: nodeId });
params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId);
params.objId = wFDiagram.objId;
module = sol.create("sol.common.ix.functions.Subscription", params);
module.process();
logger.exit("onExitNode_Subscription");
}
/**
* @member sol.common.ix.functions.Subscription
* @method RF_sol_function_Subscription
* @static
* @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName
*/
function RF_sol_function_Subscription(ec, args) {
var params, module;
logger.enter("RF_sol_function_Subscription", args);
params = sol.common.ix.RfUtils.parseAndCheckParams(ec, arguments.callee.name, args);
module = sol.create("sol.common.ix.functions.Subscription", params);
module.process();
logger.exit("RF_sol_function_Subscription");
return "{}"; // return empty JSON to avoid errors with older WF client libs
}